home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / atexit.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  2KB  |  75 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. '''
  5. atexit.py - allow programmer to define multiple exit functions to be executed
  6. upon normal program termination.
  7.  
  8. One public function, register, is defined.
  9. '''
  10. __all__ = [
  11.     'register']
  12. import sys
  13. _exithandlers = []
  14.  
  15. def _run_exitfuncs():
  16.     '''run any registered exit functions
  17.  
  18.     _exithandlers is traversed in reverse order so functions are executed
  19.     last in, first out.
  20.     '''
  21.     exc_info = None
  22.     while _exithandlers:
  23.         (func, targs, kargs) = _exithandlers.pop()
  24.         
  25.         try:
  26.             func(*targs, **kargs)
  27.         continue
  28.         except SystemExit:
  29.             exc_info = sys.exc_info()
  30.             continue
  31.             import traceback as traceback
  32.             print >>sys.stderr, 'Error in atexit._run_exitfuncs:'
  33.             traceback.print_exc()
  34.             exc_info = sys.exc_info()
  35.             continue
  36.         
  37.  
  38.         None<EXCEPTION MATCH>SystemExit
  39.     if exc_info is not None:
  40.         raise exc_info[0], exc_info[1], exc_info[2]
  41.     
  42.  
  43.  
  44. def register(func, *targs, **kargs):
  45.     '''register a function to be executed upon normal program termination
  46.  
  47.     func - function to be called at exit
  48.     targs - optional arguments to pass to func
  49.     kargs - optional keyword arguments to pass to func
  50.     '''
  51.     _exithandlers.append((func, targs, kargs))
  52.  
  53. if hasattr(sys, 'exitfunc'):
  54.     register(sys.exitfunc)
  55.  
  56. sys.exitfunc = _run_exitfuncs
  57. if __name__ == '__main__':
  58.     
  59.     def x1():
  60.         print 'running x1'
  61.  
  62.     
  63.     def x2(n):
  64.         print 'running x2(%r)' % (n,)
  65.  
  66.     
  67.     def x3(n, kwd = None):
  68.         print 'running x3(%r, kwd=%r)' % (n, kwd)
  69.  
  70.     register(x1)
  71.     register(x2, 12)
  72.     register(x3, 5, 'bar')
  73.     register(x3, 'no kwd args')
  74.  
  75.